Modern scientific progress and technological advances have resulted in a growing variety of increasingly sophisticated and complex devices and machines. Many recently developed hardware items and components have resulted in electronic devices and machines with faster processing capabilities, increased storage capacities, better video presentations, higher quality audio systems and other improved features, often in more compact devices and at lower costs with respect to previous generation items and components. One unfortunate side-effect of continuing advancements in chips, boards and other electronic items is that software programs and architectures for computing units and systems can sometimes lag behind in development, and thus may not fully optimize or even make use of many capabilities of various emerging and recently developed electronics technologies. Devices with software structures and programs that might lag behind in this manner can include, for example, general-purpose computers such as a laptop or desktop personal computer (“PC”), among others. Software structures or routines that can be archaic in many PCs can include, for example, diagnostics, boot and initialization routines, among others.
To alleviate such problems, various organizations and industry leaders have begun to devise examples of and standards for improved software structures and programs that move away from those that tend to be relatively outdated and restrictive. One example of such a movement is the Extensible Firmware Interface (“EFI”) and associated standards that have been recently promulgated by Intel Corporation of Santa Clara, Calif. for use in various newer generation electronics products. As is known, this EFI provides options and guidelines for using programs and running routines in a pre-boot environment of a PC based system, and examples of such can be found on the Intel web site at http://www.intel.com/technology/efi.
Another example of a class of electronic devices that have experienced a relative lag in software and hardware architecture development with respect to recent advances in electronic technologies is that of gaming machines. In a typical gaming machine, such as, for example, a video poker machine, blackjack machine, keno machine, or slot machine, among others, a game play is first initiated through a player wager of money or credit, whereupon the gaming machine determines a game outcome, presents the game outcome to the player and then potentially dispenses an award of some type, including a monetary award, depending on the game outcome. Although this process is generally true for both mechanical and electronic gaming machines, electronic machines tend to be more popular with players and thus more lucrative for casinos for a number of reasons, such as increased game varieties, more attractive and dynamic presentations and the ability to award larger jackpots.
Electronic gaming machines can include various hardware and software components to provide a wide variety of game types and game playing capabilities, with such hardware and software components being generally well known in the art. A typical electronic gaming machine can include hardware devices and peripheral such as bill validators, coin acceptors, card readers, keypads, buttons, levers, touch screens, coin hoppers, ticket printers, player tracking units and the like. In addition, each gaming machine can have various audio and visual display components that can include, for example, speakers, display panels, belly and top glasses, exterior cabinet artwork, lights, and top box dioramas, as well as any number of video displays of various types to show game play and other assorted information, with such video display types including, for example, a cathode ray tube (“CRT”), a liquid crystal display (“LCD”), a light emitting diode (“LED”), a flat panel display and a plasma display, among others. Software components can include, for example, boot and initialization routines, various game play programs and subroutines, credit and payout routines, image and audio generation programs, various component modules and a random number generator, among others. In addition, a typical electronic gaming machine comprises a central processing unit (“CPU”) or master gaming controller (“MGC”) that generally controls various combinations of hardware and software devices and components that encourage game play, allow a player to play a game on the gaming machine and control payouts and other awards.
It is well known that gaming machines are becoming more sophisticated, such that current software and hardware architectures are becoming too slow and inadequate to optimize the capabilities of newer technologies. Newer machines, such as those having “Wheel of Fortune,” “Star Wars” or other similar themes, can require increasingly complex and demanding processing routines, as well as many different presentations, video and sound. Such requirements tend to result in a need for better processing capabilities and massive amounts of data storage, as well as improved communication and data transfer speeds. Because the costs and logistics of providing such capabilities become more prohibitive within the restrictive architectures of most electronic gaming machines, the overall qualities and functionalities of such gaming machines continue to lag behind those of other electronic devices and machines.
Many examples of current legacy architectures that can hinder the overall performance of a gaming machine involve the operating system (“OS”) and many associated boot and initialization processes. As one particular example, the operating system on an electronic gaming machine usually requires knowledge of the specific hardware platform installed on that gaming machine in order to boot up. This can be particularly disadvantageous in that many gaming specific software modules are or can be designed to be completely hardware independent. Such software modules can include, for example, diagnostics, encryption and/or authenticator modules, among others. While the use of such modules in a pre-boot environment might be desirable for various reasons, implementations in this manner are rarely practical in current architectures where booting up an operating system must typically be done first or very early in a gaming machine start up or reset process.
In addition, the specific firmware linking the operating system and hardware platform in a given gaming machine usually has a number of limitations as well. Using the basic input/output system (“BIOS”) of a gaming machine as one specific example, a typical gaming machine BIOS is written in assembler language and contains a number of legacy features that do not enhance the functionality of an advanced gaming machine, but rather detract from it in a number of ways. For example, a typical gaming machine BIOS contains disadvantages with respect to scalability, complexity, maintenance and compatibility, among others, as will be readily appreciated. For at least these reasons, it can be very difficult and tedious to write any customized application that runs before the operating system is started.
Furthermore, the very nature of many gaming machine architectures tends to render whole platforms in these devices as non-interchangeable. Current electronic gaming machine architectures generally include a specific game application, a general gaming platform, and a general hardware platform. The general gaming platform typically contains a base operating system, such as Windows CE or QNX, and a variety of gaming specific software modules, while the hardware platform generally contains the hardware and associated firmware of the gaming machine. Typically, too many components of a given gaming platform on an electronic gaming machine must be customized with respect to the actual hardware platform used on that gaming machine, with the consequence being that much of the gaming platform software for different gaming machines must be rewritten or redesigned for each different gaming machine. Of course, such customization can be very inefficient, particularly where the use and functions of many software modules and even portions of platforms are repeated, albeit in different forms as a result of the variances in hardware platforms. In addition, it is nearly impossible to replace or even substantially alter a hardware platform in a given gaming machine without replacing or making significant changes to the respective gaming platform in place.
In light of the foregoing issues, it would be quite advantageous to abstract the gaming platform from the hardware platform in a gaming machine as much as possible, such that the gaming platform would not need to be concerned with various hardware details in order to boot up the operating system. Not only would platform interchangeability then be a possibility, but a pre-boot execution environment could also be established to allow for the use of programs that would be compatible with more systems and that could be readily scaled. Accordingly, it is generally desirable to provide an electronic gaming machine hardware and software architecture that allows for better optimization of current electronic technologies, and in particular that such an architecture abstract the gaming platform from the hardware platform such that platform interchangeability and effective pre-boot environments are created.